
import git
import os


# 获取当前文件的绝对路径
current_file_path = os.path.abspath(__file__)
# 获取当前文件的目录路径
current_dir = os.path.dirname(current_file_path)
# 获取当前文件目录的上两级目录
parent_dir = os.path.dirname(os.path.dirname(current_dir))

# Gitee仓库信息
GITEE_REPO_URL = 'https://gitee.com/ma-fanxiang/fast-see.git'
LOCAL_REPO_PATH = parent_dir

def get_latest_commit_hash(repo):
    """获取远程master分支的最新提交哈希值"""
    try:
        repo.remotes.origin.fetch()  # 拉取最新的远程更新
        return repo.remotes.origin.refs.master.commit.hexsha
    except Exception as e:
        raise RuntimeError(f"获取远程master提交哈希时出错: {e}")

def update_repo(repo):
    """更新本地仓库，丢弃未提交的更改/保存修改"""
    try:
        # 丢弃未提交的更改
        repo.git.reset('--hard')  # 强制重置本地分支到最后一次提交
        repo.git.clean('-fd')  # 删除未跟踪的文件
        repo.git.pull()  # 拉取并合并最新的远程更新
        return True
    except Exception as e:
        raise RuntimeError(f"更新仓库时出错: {e}")

def is_git_repository(path):
    """检查指定路径是否为Git仓库"""
    return os.path.exists(os.path.join(path, '.git'))

def check():
    if not is_git_repository(LOCAL_REPO_PATH):
        raise RuntimeError("本地目录不是一个Git仓库。")

    try:
        repo = git.Repo(LOCAL_REPO_PATH)  # 初始化Git仓库
    except git.exc.InvalidGitRepositoryError:
        raise RuntimeError("本地目录不是一个有效的Git仓库。")

    latest_commit_hash = get_latest_commit_hash(repo)
    if latest_commit_hash:
        local_commit_hash = repo.head.commit.hexsha

        if local_commit_hash != latest_commit_hash:
            return repo
        else:
            return True
    else:
        raise RuntimeError("无法从远程仓库获取最新master提交哈希。")

# if __name__ == "__main__":
#     try:
#         repo = check()
#         if repo is True:
#             print("本地master分支是最新的。")
#         else:
#             print("版本不是最新版，正在自动更新...")
#             # update_repo(repo)  # 在这里调用 update_repo 函数进行更新
#     except RuntimeError as e:
#         print(f"错误: {e}")
